package com.qf.rabbitmq.simple;


import com.qf.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

/*
* 一个生产者对应一个队列    一个队列对应一个消费者
*  多个消费者对应一个队列是    也只是一个消费者在处理
* */
import java.nio.charset.StandardCharsets;
//发送者
public class Sender {

//    声明了一个 队列名
    private static final String QUEUENAME="bk2102";

    public static void main(String[] args)  {

//        获取连接
        Connection connection = ConnectionUtil.getConnection();
        try {
            //       通过连接  创建通道
            Channel  channel = connection.createChannel();
            /*
            * 通过 通道 声明 队列
            * 参数1   队列的名字
            * 参数2   是否持久化 设置为true 的话会保存在磁盘上 否则在内存
            * 参数3   是否排外 true 意味着 只能有一个连接到当前队列  类似于悲观锁
            * 参数4   是否自动删除 true 代表当前队列所有的消息被消费并且连接关闭后自动删除
            * 参数5   附加参数
            *
            * 同一个队列 可以执行声明代码多次  但是只会创建一次
            * 但是要注意所有的参数都要和第一次的参数保持一致
            * */
            channel.queueDeclare(QUEUENAME,false,false,false,null);
//      发送  1     2队列名字   3  附加属性  4 要发送的内容
            for (int i = 0; i < 100; i++) {
                channel.basicPublish("",QUEUENAME, null, ("你在说什么啊呢"+i).getBytes(StandardCharsets.UTF_8));

            }
//        如果没有用了 关闭连接
            channel.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
